#!/bin/bash

# 检查是否提供了1到2个参数
if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
    echo "Usage: $0 input.mp4 [start_time]"
    exit 1
fi

# 获取输入文件名
input_file="$1"

# 检查输入文件是否存在
if [ ! -f "$input_file" ]; then
    echo "Error: Input file '$input_file' does not exist."
    exit 1
fi

# 从输入文件名中提取基本文件名（不包括扩展名）
base_name="${input_file%.*}"

# 设置输出文件名为基本文件名加上.png
output_file="${base_name}.png"

# 期待的视频编码
expected_codec="h264"

# 如果提供了第二个参数，则使用它作为起始时间
if [ "$#" -eq 2 ]; then
    start_time="$2"
else
    start_time="00:00:00"
fi

# 使用ffmpeg转换视频：获取视频的第一帧作为封面
ffmpeg -y -i "$input_file" -ss "$start_time" -vframes 1 "$output_file"

# 检查ffmpeg执行结果
if [ $? -eq 0 ]; then
    # 压缩封面图片  -q:v 2 质量高 
    ffmpeg -y -i "$output_file" -vf scale=-1:360 -q:v 2 "$output_file"
    
    if [ $? -eq 0 ]; then
        echo "Cover image compressed and saved to '$output_file'."
    else
        echo "Failed to compress cover image. Check the logs for more information."
        exit 1
    fi
else
    echo "Failed to extract cover image. Check the logs for more information."
    exit 1
fi
